ওয়েব অ্যাপ্লিকেশনে Form Validation এবং Error Handling একটি গুরুত্বপূর্ণ ভূমিকা পালন করে। এটি ব্যবহারকারীদের সঠিক ডেটা প্রদান নিশ্চিত করে এবং ত্রুটি সম্পর্কে ব্যবহারকারীদের সঠিক নির্দেশনা দেয়। GWT-তে সহজেই ফর্ম ভ্যালিডেশন এবং এরর হ্যান্ডলিং করা যায়, যা ডেভেলপারদের সময় এবং প্রচেষ্টা সাশ্রয় করে।
ফর্ম ভ্যালিডেশন (Form Validation)
Client-Side Validation
Client-side validation ব্যবহার করে ব্যবহারকারীর ডেটা সাবমিট করার আগেই তা যাচাই করা যায়। এটি দ্রুত এবং ব্যান্ডউইথ সাশ্রয়ী।
উদাহরণ: TextBox ভ্যালিডেশন
TextBox emailField = new TextBox();
Button submitButton = new Button("Submit");
submitButton.addClickHandler(event -> {
String email = emailField.getText();
if (email.isEmpty()) {
Window.alert("Email field cannot be empty!");
} else if (!email.matches("^[\\w.%+-]+@[\\w.-]+\\.[a-zA-Z]{2,6}$")) {
Window.alert("Invalid email address!");
} else {
Window.alert("Email is valid!");
}
});
RootPanel.get().add(emailField);
RootPanel.get().add(submitButton);
Server-Side Validation
ক্লায়েন্ট-সাইড যাচাইয়ের পাশাপাশি, Server-side validation ব্যবহার করে সুরক্ষা নিশ্চিত করা হয়। এটি বিশেষত গুরুত্বপূর্ণ যখন ব্যবহারকারী ফর্ম ডেটা পরিবর্তন করতে পারে (উদাহরণ: DevTools ব্যবহার করে)।
উদাহরণ: RPC-এর মাধ্যমে সার্ভার-সাইড ভ্যালিডেশন
ইন্টারফেস তৈরি করুন:
@RemoteServiceRelativePath("validation") public interface ValidationService extends RemoteService { boolean isValidEmail(String email); }ইমপ্লিমেন্টেশন যুক্ত করুন:
public class ValidationServiceImpl extends RemoteServiceServlet implements ValidationService { @Override public boolean isValidEmail(String email) { return email != null && email.matches("^[\\w.%+-]+@[\\w.-]+\\.[a-zA-Z]{2,6}$"); } }ক্লায়েন্ট কোড:
ValidationServiceAsync validationService = GWT.create(ValidationService.class); validationService.isValidEmail(email, new AsyncCallback<Boolean>() { @Override public void onFailure(Throwable caught) { Window.alert("Validation failed: " + caught.getMessage()); } @Override public void onSuccess(Boolean result) { if (result) { Window.alert("Email is valid!"); } else { Window.alert("Invalid email address!"); } } });
এরর হ্যান্ডলিং (Error Handling)
ক্লায়েন্ট-সাইড এরর হ্যান্ডলিং
ব্যবহারকারীদের দ্রুত প্রতিক্রিয়া জানাতে ক্লায়েন্ট-সাইড ত্রুটি পরিচালনা অত্যন্ত কার্যকর।
উদাহরণ: TextBox-এ Error Message প্রদর্শন
TextBox emailField = new TextBox();
Label errorLabel = new Label();
Button submitButton = new Button("Submit");
submitButton.addClickHandler(event -> {
String email = emailField.getText();
if (email.isEmpty()) {
errorLabel.setText("Email field cannot be empty!");
} else if (!email.matches("^[\\w.%+-]+@[\\w.-]+\\.[a-zA-Z]{2,6}$")) {
errorLabel.setText("Invalid email address!");
} else {
errorLabel.setText("");
Window.alert("Form submitted successfully!");
}
});
RootPanel.get().add(emailField);
RootPanel.get().add(submitButton);
RootPanel.get().add(errorLabel);
সার্ভার-সাইড এরর হ্যান্ডলিং
GWT-তে RPC কলের সময় সার্ভার থেকে আসা ত্রুটিগুলি সঠিকভাবে পরিচালনা করা যায়।
উদাহরণ: AsyncCallback ব্যবহার
validationService.isValidEmail(email, new AsyncCallback<Boolean>() {
@Override
public void onFailure(Throwable caught) {
if (caught instanceof IllegalArgumentException) {
Window.alert("Invalid data provided: " + caught.getMessage());
} else {
Window.alert("An unexpected error occurred: " + caught.getMessage());
}
}
@Override
public void onSuccess(Boolean result) {
if (result) {
Window.alert("Email is valid!");
} else {
Window.alert("Invalid email address!");
}
}
});
ভালো প্র্যাকটিস
- Error Message Localization: বিভিন্ন ভাষায় ত্রুটির বার্তা প্রদর্শনের জন্য GWT-এর
ConstantsবাMessagesইন্টারফেস ব্যবহার করুন। - Reusable Validation Methods: একাধিক ফর্মে ভ্যালিডেশন লজিক পুনরায় ব্যবহার করার জন্য একটি Utility ক্লাস তৈরি করুন।
- UI Feedback: ব্যবহারকারীদের জন্য ইনলাইন ত্রুটি বার্তা এবং হাইলাইট করা ফর্ম ফিল্ড ব্যবহার করুন।
CSS দিয়ে Error Styling
.error {
color: red;
font-weight: bold;
}
errorLabel.setStyleName("error");
GWT-তে ফর্ম ভ্যালিডেশন এবং এরর হ্যান্ডলিংয়ের সঠিক বাস্তবায়ন অ্যাপ্লিকেশনের নিরাপত্তা ও ব্যবহারকারীর অভিজ্ঞতাকে উল্লেখযোগ্যভাবে উন্নত করতে পারে।
Read more